/**
 * 处理axios相关的内容
 */
//导入axios
import axios from 'axios'
//导入cookieUtil,判断cookie中是否存在authorization
import CookieUtil from './cookieUtil'
//导入路由，便于跳转页面
import router from '../router'


//给axios设置一个默认的请求前缀，会自动给所有axios发送的请求URl自动加上"/api"
axios.defaults.baseURL="/api"

//创建一个axios类的对象--巧妙点在于，以后用send发请求的才会被拦截，用axios发请求的不会被拦截
let send = axios.create()

//配置请求拦截器
send.interceptors.request.use(config =>{
  console.log("请求拦截器正在拦截前端发出的请求……");
  //获取token
  let token = CookieUtil.get("authorization");
  //通过value值来判断cookie中是否存在token。null则不存在
  if(token){
    //在js中token=null直接就是false
    //非null，就设置请求头的值
    config.headers.authorization = token;
  }
  //放行
  return config
})

//配置响应拦截器--如果返回的响应头中有token
send.interceptors.response.use(res => {
  console.log("响应拦截器拦截请求");
  //判断响应码是否为403
  if(res.data.code == 403){
    console.log(res.data)
    //显示提示消息
    // Vue.$message.error(res.data.message)
    //跳转到登录页面--因为不是vue页面，所以不能由路由(this.$router)来跳.要先导入才能跳
    // Vue.$router.push("/login")
    router.push("/login")
    return
  }
  //获取 token
  let token = res.headers.authorization
  //响应头中不一定有token
  if(token){//token中有值
    //替换token,（token可能是原来的，也可能是更新过的，所以要替换）
    document.cookie = "authorization=" + token + ";max-age=100*60*1000;path=/"
  }
  //放行：让发请求的地方能接收到数据
  // return res.data//只返回res中的data部分，过滤掉其他部分，比如header等
  return res
})

//导出
export default send